byte radky[4] = {3,8,7,5};
byte sloupce[3] = {4,2,6};

char znaky[4][3] = {{40,41,' '},
                   {123,125,' '},
                   {91,93,' '},
                   {60,62,' '}};

int cekej = 200;
long cas;

void setup(){
    for(int i = 0; i < 4; i++){
        pinMode(radky[i], OUTPUT);
    }  
    for(int i = 0; i < 3; i++){
        pinMode(sloupce[i], INPUT);
    }
    
    cas = millis();
}
void loop(){
    for(int a = 0; a < 4; a++){
        digitalWrite(radky[a],HIGH);
        for(int b = 0; b < 3; b++){
            if(digitalRead(sloupce[b]) == HIGH 
			&& (millis() - cekej) >= cas){
                zmackniCesky(znaky[a][b]);
                cas = millis();
            }
        }
        digitalWrite(radky[a],LOW);
    }        
}

void zmackniCesky(char znak){
    Keyboard.press(KEY_LEFT_ALT);
    delay(10);
    Keyboard.press(KEY_LEFT_SHIFT);
    delay(10);
    Keyboard.releaseAll();
    delay(10);
    Keyboard.print(znak);
    delay(10);
    Keyboard.press(KEY_LEFT_ALT);
    delay(10);
    Keyboard.press(KEY_LEFT_SHIFT);
    delay(10);
    Keyboard.releaseAll();
    delay(10);
}

void zmackniAnglicky(char znak){
    Keyboard.print(znak);
}